14.4.1 Sky and Aerial Perspective

4. Archive/WhiteEngine/Real-Time Rendering 4th Edition/Attachments/Pasted image 20250519164350.png
두가지 다른 타입의 atmospheric light scattering: Rayleigh only(위)와 Mie with regular rayleight(아래) 산란. 왼쪽에서 오른쪽은 density가 0, regular density[203], 과포화 density이다.

atmospheric effects를 렌더링 하기 위해, Figure 14.22에 보이는 것과 같이 두가지 주요 요소를 설명해야 한다. 첫번째로, 우리는 파장 의존적인 Rayleigh scattering을 일으키는 공기 입자와 햇빛의 상호작용을 시뮬레이션 해야한다. 이것이 하늘의 색과 얇은 안개, 즉 aerial perspective(공기의 원근) 을 만들어 낸다. 두번째는, 지면 근처에 집중된 큰 입자들이 태양관에 미치는 효과가 필요하다. 이러한 큰 입자의 집중은 날씨나 오염과 같은 요소에 의존한다. 큰 입자는 파장 의존적인 Mie scattering을 만들어 낸다. 이러한 현상은 태양 주변에 밝은 헤일로를 만들어 낸다.

첫번째 물리 기반 대기 모델[1285]은 우주에서 지구와 지구의 대기를 single scattering을 시뮬레이션 하여 렌더링 했다. 비슷한 결과를 O'Neil.을 방식[1333]으로 만들수 있다. 지면에서 우주로 향하는 지구 렌더링은 single-pass shader를 사용한 ray marching 으로 달성할 수 있다. 비싼 Mie와 Rayleigh scattering ray marching 적분 계산은 sky dome을 렌더링 할때 vertex단위로 계산되었다. 그리고 시각적으로 고주파를 가지는 phase function은 pixel shader에서 계산 되었다. 이것은 부드럽게 보이게 만들고, 보간으로 인해 sky geometry가 드러나는 것을 방지할 수 있습니다. 또한 scattering 값을 텍스쳐에 저장하고 여러 프레임에 걸쳐 평가를 분산시킴으로써 동일한 결과를 얻는 것도 가능하며, 성능 향상을 위해 업데이트 지연을 수용하는 방식이다[1871].

해석적 기법은 측정된 sky radiance[1443]나 대기 내 산란을 경로 추적으로 고비용 시뮬레이션하여 생성한 참조 이미지에 수학적 모델을 피팅하여 사용한다. 이러한 기법에서 입력 매개변수는 일반적으로 participating media material을 다룰 때보다 제한적이다. 예를 들어 turbidity Mie scattering을 유발하는 입자의 기여도를 나타내며, σs나 σt 계수를 직접 사용하는 대신 활용된다. Preetham의 모델[1443]은 turbidity와 태양 고도를 기반으로 어떤 방향에서도 sky radiance를 평가할 수 있다. 이 모델은 이후 스펙트럼 출력 지원, 태양 주변 산란 복사휘도의 방향성 향상, 새로운 지면 반사율 입력 파라미터 추가 등을 통해 개선되었다[778]. 해석적 하늘 모델은 평가 속도가 매우 빠르다는 장점이 있지만, 지상 시점에만 국한되어 있고, 대기 파라미터를 자유롭게 변경하여 외계 행성을 시뮬레이션하거나 예술적 목적의 특수한 시각 효과를 구현하는 데는 한계가 있다.

또다른 접근법은 지구가 heterogeneous participating media로 구성된 대기층으로 둘러쌓인 완벽한 구형임을 가정하는 것이다. 대기 조성에 관한 추가적인 설명은 Bruneton and Neyret[203], Hillaire[743]을 참고. 이러한 가정을 바탕으로, 현재 뷰의 고도 r, 천정 방향 대비 뷰 벡터 각도의 코사인 µv, 천정 방향 대비 태양방향 각도의 코사인 µs, 태향 방향과 뷰 벡터 간 방위각 평면에서의 각도의 코사인 v에 따라 transmittance 및 scattering을 사전 계산된 테이블에 저장할 수 있다. 사전 계산 단계에서, 대기 내 투과율을 적분하여 2차원 조회 테이블(LUT) 텍스처 Tlut에 저장하고, 런타임 시 동일한 파라미터를 사용하여 샘프링 할 수 있다. 이 텍스처는 태양, 별, 또는 다른 천체와 같은 하늘 요소에 대기 transmittance를 적용하는데 사용할 수 있다.

4. Archive/WhiteEngine/Real-Time Rendering 4th Edition/Attachments/Pasted image 20250520145103.png
Lookup Table을 사용해 지구의 대기를 지면에서(왼쪽)와 우주에서(오른쪽) 실시간 렌더링 한 장면.

Scattering은 Bruneton and Neyret[203]가 앞서 언급한 모든 파라미터로 매개변수화된 사차원 LUT Slut에 산란을 저장하는 방법을 설명한다. 그들은 또한 n차 다중 산란을 평가하는 방법도 제시하는데,

  1. Single-scattering table Slut를 평가하고
  2. Slut(n)을 slut(n - 1)을 사용하여 평가하고
  3. 결과를 Slut에 더한다.
    2와 3을 n - 1번 반복한다. 자세한 방법과 소스코드는 [203]에 제공되어 있다. 예제 결과는 Figure 14.23참고. Bruneton과 Neyret의 파라미터화는 수평선에서 가끔 visual artifacts를 보일 수 있다. Yusov[1947]는 개선된 변환을 제시 하였다. v를 무시함으로써 삼차원 LUT 을 사용하는 것또한 가능하다[419]. 이 방식에서는 지구가 대기 내에서 그림자를 드리우지 않지만, 이는 허용 가능한 trade-off일 수 있다. 장점은 LUT의 크기가 작아지고, 업데이트 및 샘플링 비용이 낮아진다는 것이다.

4. Archive/WhiteEngine/Real-Time Rendering 4th Edition/Attachments/Pasted image 20250520150542.png
fully parameterized model을 사용한 실시간 렌더링은 지구의 대기(위)와 화성의 blue sunset과 같은 다른 행성의 대기(아래)를 시뮬레이션 할 수 있다.

이 마지막 3차원 LUT 방식은 EA의 Frost-bite엔진 게임, Need for Speed, Mirror's Edge Catalyst, and FIFA에서 사용된다[743]. 이 경우, 아티스트는 물리 기반 대기 파라미터를 조정하여 원하는 하늘 시각을 구현할 수 있으며, 외계 행성의 대기를 시뮬레이션하는 것도 가능하다.Figure 14.24 참고. LUT는 대기 파라미터가 변경될 때 마다 다시 계산되어야 한다. LUT를 효율적으로 업데이트 하기 위해서, ray marching을 하는 대신 대기내의 material 을적분하는 것을 근사하는 함수를 사용하는 것도 가능하다[1587]. LUTs를 업데이트하는 것의 비용은 시간적으로 평가를 분산하고 다중 산란을 분할하여 계산함으로써 6%까지 줄일 수 있다. 예를 들어 특정 scattering order n에 대해 Slut(n)의 일부만 업데이트하고, 마지막 두 LUT를 보간하여 몇 프레임의 지연을 허용할 수 있다. 또 다른 최적화 방법으로 픽셀당 서로 다른 LUTs를 여러번 샘플링 하는 것을 피하는 것이다. Mie와 Rayleigh scattering을 카메라 프러스텀에 매핑된 저해상도 볼륨 텍스처에 bake해 저장하는 최적화도 가능하다. 시각적으로 고주파인 위상 함수는 픽셀 셰이더에서 평가하여 태양 주위의 부드러운 산란 후광을 생성한다. 이러한 볼륨 텍스처는 장면 내 투명한 객체들에 대해 버텍스 기준으로 aerial perspective를 적용할 수도 있다.